﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using TrainingWorkshop.Models;

namespace TrainingWorkshop.Contracts
{
    [ServiceContract]
    public interface IProjectBService
    {
        #region
        /// <summary>
        /// OperationContract for Getting all courses from database
        /// </summary>
        /// <returns>List of CourseShows</returns>
        [OperationContract]
        List<CourseShows> GetAllCourses();

        /// <summary>
        /// OperationContract for Getting Selected courses based on coursename and status
        /// </summary>
        /// <param name="courseName">String CourseName</param>
        /// <param name="courseStatus">Bool CourseStatus</param>
        /// <returns>List of CourseShows</returns>
        [OperationContract]
        List<CourseShows> GetAllSelectedCourses(string courseName, bool courseStatus);

        /// <summary>
        /// OperationContract for Updating Courses
        /// </summary>
        /// <param name="course">Course Object</param>
        [OperationContract]
        void UpdateCourse(Models.Course course);

        /// <summary>
        /// OperationContract for Deleting Course based on CourseId
        /// </summary>
        /// <param name="id">int CourseId</param>
        [OperationContract]
        void DeleteCourse(int courseId);

        /// <summary>
        /// OperationContract for Changing CourseStatus
        /// </summary>
        /// <param name="course">Course Object</param>
        [OperationContract]
        void ChangeState(Models.Course course);

        #endregion
        /// <summary>
        /// OperationContract for Getting all levels from database
        /// </summary>
        /// <returns>List of Level</returns>
        [OperationContract]
        List<TrainingWorkshop.Models.Level> GetAllLevels();

        /// <summary>
        /// OperationContract for Getting all teachers form database
        /// </summary>
        /// <returns>List of Teacher</returns>
        [OperationContract]
        List<TrainingWorkshop.Models.Teacher> GetAllTeachers();
    }
}
